home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / OCFINC.PAK / OCLINK.H < prev    next >
C/C++ Source or Header  |  1997-05-06  |  6KB  |  168 lines

  1. //----------------------------------------------------------------------------
  2. // ObjectComponents
  3. // Copyright (c) 1994, 1997 by Borland International, All Rights Reserved
  4. //
  5. // $Revision:   2.9  $
  6. //
  7. // Definition of TOcLinkView Class
  8. //----------------------------------------------------------------------------
  9. #if !defined(OCF_OCLINK_H)
  10. #define OCF_OCLINK_H
  11.  
  12. #if !defined(OCF_OCBOCOLE_H)
  13. # include <ocf/ocbocole.h>
  14. #endif
  15. #if !defined(OCF_OCREG_H)
  16. # include <ocf/ocreg.h>
  17. #endif
  18. #if !defined(OCF_OCOBJECT_H)
  19. # include <ocf/ocobject.h>
  20. #endif
  21. #if !defined(CLASSLIB_VECTIMP_H)
  22. # include <classlib/vectimp.h>
  23. #endif
  24. #if !defined(WINSYS_GEOMETRY_H)
  25. # include <winsys/geometry.h>
  26. #endif
  27.  
  28. #if defined(BI_NAMESPACE)
  29. namespace OCF {
  30. #endif
  31.  
  32. class _ICLASS TOcView;
  33.  
  34. //
  35. // class TOcLinkView
  36. // ~~~~~ ~~~~~~~~~~~
  37. // Link Viewer object for a server document
  38. //
  39. class _ICLASS TOcLinkView : public TUnknown,
  40. //                            public IBPart2 {
  41.                             public IBPart {
  42.   public:
  43.     TOcLinkView(TOcView* ocView, TRegList* regList = 0, IUnknown* outer = 0);
  44.     int Detach();
  45.  
  46.     // IBSite pass-thrus
  47.     //
  48.     void    Invalidate(TOcInvalidate);
  49.     void    Disconnect();
  50.  
  51.     // Misc status accessors, etc.
  52.     //
  53.     void     GetLinkRect();
  54.     void     SetMoniker(const char far* name);
  55.     TString& GetMoniker() {return Moniker;};
  56.  
  57.     // Object reference & lifetime managment
  58.     //
  59.     ulong   _IFUNC AddRef() {return GetOuter()->AddRef();}
  60.     ulong   _IFUNC Release() {return GetOuter()->Release();}
  61.     HRESULT _IFUNC QueryInterface(const GUID far& iid, void far*far* iface)
  62.                      {return GetOuter()->QueryInterface(iid, iface);}
  63.  
  64.   protected:
  65.     // TUnknown virtual overrides
  66.     //
  67.     HRESULT      QueryObject(const IID far& iid, void far* far* iface);
  68.  
  69.     // IBDataNegotiator implementation
  70.     //
  71.     uint     _IFUNC CountFormats();
  72.     HRESULT  _IFUNC GetFormat(uint index, TOcFormatInfo far* fmt);
  73.  
  74.     // IBDataProvider2 implementation
  75.     //
  76.     HANDLE  _IFUNC  GetFormatData(TOcFormatInfo far*);
  77.     HRESULT _IFUNC  Draw(HDC, const RECTL far*, const RECTL far*, TOcAspect, TOcDraw bd);
  78.     HRESULT _IFUNC  GetPartSize(TSize far*);
  79.     HRESULT _IFUNC  Save(IStorage*, BOOL sameAsLoad, BOOL remember);
  80. //    HRESULT _IFUNC  SetFormatData(TOcFormatInfo far* fmt, HANDLE data, bool release);
  81.  
  82.     // IBPart2 implementation
  83.     //
  84.     HRESULT _IFUNC  Init(IBSite far*, TOcInitInfo far*);
  85.     HRESULT _IFUNC  Close();
  86.     HRESULT _IFUNC  CanOpenInPlace();
  87.     HRESULT _IFUNC  SetPartSize(TSize far*);
  88.     HRESULT _IFUNC  SetPartPos(TRect far*);
  89.     HRESULT _IFUNC  Activate(BOOL);
  90.     HRESULT _IFUNC  Show(BOOL);
  91.     HRESULT _IFUNC  Open(BOOL);
  92.     HRESULT _IFUNC  EnumVerbs(TOcVerb far*);
  93.     HRESULT _IFUNC  DoVerb(uint);
  94.     HWND    _IFUNC  OpenInPlace(HWND);
  95.     HRESULT _IFUNC  InsertMenus(HMENU, TOcMenuWidths far*);
  96.     HRESULT _IFUNC  ShowTools(BOOL);
  97.     void    _IFUNC  FrameResized(const TRect far*, BOOL);
  98.     HRESULT _IFUNC  DragFeedback(TPoint far*, BOOL);
  99.     HRESULT _IFUNC  GetPalette(LOGPALETTE far* far*);
  100.     HRESULT _IFUNC  SetHost(IBContainer far* objContainer);
  101.     HRESULT _IFUNC  DoQueryInterface(const IID far& iid, void far* far* pif);
  102.     LPOLESTR _IFUNC GetName(TOcPartName);
  103.  
  104.     TPoint          Origin;
  105.     TSize           Extent;
  106.  
  107.   private:
  108.    ~TOcLinkView();
  109.  
  110.     TOcView*        OcView;          // Our hosting view that link is on
  111.     IUnknown*       BSite;           // In-place site helper object
  112.     IBSite*         BSiteI;          // Site interface
  113.     IBApplication*  BAppI;           // Site's application interface
  114.  
  115.     TString         Moniker;
  116.  
  117.   friend class TOcLinkCollection;
  118. };
  119.  
  120. //
  121. // class TOcLinkCollection
  122. // ~~~~~ ~~~~~~~~~~~~~~~~~
  123. // Container of link views with iterator
  124. //
  125. class TOcLinkCollection : private TCVectorImp<TOcLinkView*> {
  126.   private:
  127.     typedef TCVectorImp<TOcLinkView*> Base;
  128.     friend class TOcLinkCollectionIter;
  129.   public:
  130.     TOcLinkCollection();
  131.    ~TOcLinkCollection();
  132.     void operator delete(void* ptr) {TStandardAllocator::operator delete(ptr);}
  133.  
  134.     void Clear();
  135.     int Add(TOcLinkView* const& View) {return Base::Add(View);}
  136.     int IsEmpty() const {return Base::IsEmpty();}
  137.     unsigned Find(TOcLinkView* const& view) const {return Base::Find(view);}
  138.     virtual unsigned Count() const {return Base::Count();}
  139.     int Detach(TOcLinkView* const& view, int del = 0);
  140.     TOcLinkView* Find(TString const moniker) const;
  141. };
  142. typedef TOcLinkCollection TOcViewCollection;  // For compatibility only
  143.  
  144. //
  145. // class TOcLinkCollectionIter
  146. // ~~~~~ ~~~~~~~~~~~~~~~~~~~~~
  147. // Iterator for view collection
  148. //
  149. class TOcLinkCollectionIter : private TCVectorIteratorImp<TOcLinkView*> {
  150.   private:
  151.     typedef TCVectorIteratorImp<TOcLinkView*> Base;
  152.   public:
  153.     TOcLinkCollectionIter(const TOcLinkCollection& c) : Base(c) {}
  154.     operator int() const {return Base::operator int();}
  155.     TOcLinkView* Current() const {return Base::Current();}
  156.     TOcLinkView* operator ++(int) {return Base::operator ++(0);}
  157.     TOcLinkView* operator ++() {return Base::operator ++();}
  158.     void Restart() {Base::Restart();}
  159.     void Restart(unsigned start, unsigned stop) {Base::Restart(start, stop);}
  160. };
  161. typedef TOcLinkCollectionIter TOcViewCollectionIter;  // For compatibility only
  162.  
  163. #if defined(BI_NAMESPACE)
  164. } // namespace OCF
  165. #endif
  166.  
  167. #endif  // OCF_OCLINK_H
  168.